/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.financeiro.view;

import br.jm.financeiro.datamodel.LazyPropostaProcuracao;
import br.jm.financeiro.entity.PropostaProcuracao;
import br.jm.financeiro.sistema.eao.PropostaProcuracaoEao;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.model.LazyDataModel;

/**
 *
 * @author joao
 */
public class PropostaProcuracaoBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private PropostaProcuracao selectedPropostaProcuracao;
    private LazyDataModel<PropostaProcuracao> lazyModel;
    private PropostaProcuracaoEao propostaProcuracaoEAO;
    private FacesMessage msg = null;
    private boolean altera;

    public PropostaProcuracaoBean() {
        propostaProcuracaoEAO = PropostaProcuracaoEao.getInstance();
        selectedPropostaProcuracao = new PropostaProcuracao();

        lazyModel = new LazyPropostaProcuracao(propostaProcuracaoEAO);
    }

    public PropostaProcuracao getSelectedPropostaProcuracao() {
        return selectedPropostaProcuracao;
    }

    public void setSelectedPropostaProcuracao(PropostaProcuracao selectedPropostaProcuracao) {
        this.selectedPropostaProcuracao = selectedPropostaProcuracao;
    }

    public LazyDataModel<PropostaProcuracao> getLazyModel() {
        return lazyModel;
    }

    public void setLazyModel(LazyDataModel<PropostaProcuracao> lazyModel) {
        this.lazyModel = lazyModel;
    }
    
    public void inserir(ActionEvent actionEvent) {
        try {
            selectedPropostaProcuracao.setIdProcuracao(null);

            propostaProcuracaoEAO.create(selectedPropostaProcuracao);

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Modelo de Procuração Inserido com Sucesso: ".concat(selectedPropostaProcuracao.getDscProcuracao())), selectedPropostaProcuracao.getDscProcuracao());

        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Inserir" + selectedPropostaProcuracao.getDscProcuracao(), e.getMessage());
        } finally {
            selectedPropostaProcuracao = null;
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void alterar(ActionEvent actionEvent) {
        try {
            propostaProcuracaoEAO.edit(selectedPropostaProcuracao);

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Modelo de Procuração Alterado com Sucesso: ".concat(selectedPropostaProcuracao.getDscProcuracao())), selectedPropostaProcuracao.getDscProcuracao());
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Alterar: " + selectedPropostaProcuracao.getDscProcuracao(), e.getMessage());
        } finally {
            selectedPropostaProcuracao = null;
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void excluir(ActionEvent actionEvent) {
        try {
            propostaProcuracaoEAO.destroy(selectedPropostaProcuracao);

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Modelo de Procuração Excluido com Sucesso: ".concat(selectedPropostaProcuracao.getDscProcuracao())), selectedPropostaProcuracao.getDscProcuracao());
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Excluir: " + selectedPropostaProcuracao.getDscProcuracao(), e.getMessage());
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }
    
    public void preparaInserir(ActionEvent actionEvent) {
        this.altera = true;
        this.selectedPropostaProcuracao = new PropostaProcuracao();
    }

    public boolean isAltera() {
        return altera;
    }

    public void setAltera(boolean altera) {
        this.altera = altera;
    }
    
}
